\chapter{Types de données}

\section{Diagramme moral}

\begin{center}
\includegraphics[scale=0.70]{schema_relationnel_moral}
\end{center}

\section{Présentation des types}

\paragraph*{}

Le schéma précédent présente les différentes entités qui seront utilisées au sein de SPASS.

\subsection{Des utilisateurs et des droits}

Un utilisateur (\textit{user}) représente une personne morale. Cette personne possède certains droits qui définissent son statut (\textit{student, supervisor, advisor, administrator}).

En fonction de son statut, un utilisateur peut effectuer telle ou telle opération. Par exemple, le \textit{supervisor} peut créer un \textit{Test Script} \footnote{script de tests relatif à un \textit{assignment}} pour un certain \textit{assignment}.

Du point de vue du core, un utilisateur est  une entrée dans la base de données interne traduite en objet par \textit{SQLAlchemy}.
Le role \textit{administrator} fait référence aux personnes qui utilisent la ligne de commande pour gérer SPASS.
Le système de droits n'a de sens qu'au sein de l'interface web.

Les \textit{team} sont des groupes d'étudiants.

\subsection{Le template}

Un \textit{template} est un fichier de configuration dont les informations seront dupliquées dans la base de données interne.
Ces informations définissent un type de projet.

\subsection{L'assignment}

Un \textit{assignement} est la concrétisation d'un \textit{template}. Cet \textit{assignment} est la réunion d'un \textit{template}, d'un \textit{advisor} (enseignant responsable de l'\textit{assignement}), de scripts de tests (\textit{Test Script}) et de groupes d'étudiants (\textit{team}).

L'\textit{advisor} est responsable des groupes de son \textit{assignement}. Il peut donc gérer plusieurs groupes sur le même projet.

Un \textit{Test Script} est constitué d'une succession de \textit{test}. Un \textit{test} est représenté par un fichier stocké dans la \textit{Warehouse}. Ce fichier sera chargé dynamiquement au sein de SPASS tel un plugin. Un \textit{Test Script} pourra être utilisé par un enseignant ou par un groupe d'étudiants au travers de la plate-forme web selon sa configuration.
